home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
R-Shows
/
(c)sds.d64
/
sprites tut-1.64
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
19KB
|
544 lines
0 REM" P.J.PONZO*83*WATERLOO/ONTARIO
1 [143]"
1000 GOSUB60000:PRINTCHR$(142):PRINT"[147] SPRITES-1"
1001 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
1002 PRINT"[221] SPRITES AND STUFF [146] [221]":MS$="PONZOTUTOR"
1003 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189][144]":GOSUB63100:MS$=" WELCOME!"
1004 GOSUB63100:FORI=0TO62:READ X:POKE832+I,X:NEXT:V=53248:POKE2040,13:POKEV+21,1
1005 POKEV+39,1:POKEV+1,100:A$=" "
1006 B$="THIS IS A SPRITE"
1007 POKEV+39,1:POKEV+1,100:FORX=0TO255STEP8:POKEV,X:PRINTLEFT$(A$,8+X1);
1008 PRINTRIGHT$(B$,31-X2):X2=X2-(X2<32):X1=X1+1:FORT=1TO10:NEXT:NEXT
1009 GOSUB63000:FORI=0TO15:POKEV+39,I:FORT=1TO150:NEXT:NEXT:POKEV+21,0
1010 MS$=" YUM YUM":GOSUB63100:PRINT"[147]IT IS EASY TO HAVE UP TO 8 'SPRITES'"
1020 PRINT"ON THE SCREEN AT ONE TIME."
1030 PRINT"LET'S LABEL THE SPRITES 0,1,..7."
1040 PRINT"PICK A NUMBER N (0 TO 7) AND"
1050 PRINT"A BLOCK OF MEMORY TO HOLD THE"
1060 PRINT"INFORMATION ON THE 'SHAPE' OF"
1065 PRINT"SPRITE #N."
1070 MS$="NICE SHAPE":GOSUB63100:GOSUB63000
1080 PRINT"[147]NOW A SPRITE IS MADE UP OF AN ARRAY"
1090 PRINT"OF 'PIXELS' OR 'DOTS' ON THE SCREEN."
1100 PRINT"24 DOTS WIDE AND 21 DOTS TALL."
1110 PRINT"(24*21=504 DOTS IN TOTAL)."
1120 PRINT"EACH DOT IS EITHER 'ON' OR 'OFF'"
1125 PRINT"AND WE CAN INDICATE THIS WITH"
1130 PRINT"A '1' OR '0' (1=ON[146] & 0=OFF[146])"
1140 PRINT"THE 'SHAPE' INFO CAN THEN BE"
1150 PRINT" STORED AS 504 BINARY DIGITS"
1155 PRINT"(BITS),EITHER '1' OR '0'."
1160 PRINT"SINCE WE STORE NUMBERS IN BYTES"
1170 PRINT"IT WILL TAKE 504/8=63 BYTES!"
1180 GOSUB63000
1200 PRINT"[147]WE WILL RESERVE 63[146] BYTES OF MEMORY"
1210 PRINT"(LET'S CALL THEM 'BLOCKS')"
1220 PRINT"FOR EACH SPRITE 'SHAPE'."
1230 PRINT"YOU TELL ME THE 'BLOCK' NUMBER"
1240 PRINT"AND I'LL KNOW WHERE TO LOOK"
1250 PRINT"FOR THE SPRITE SHAPE!"
1260 PRINT"IN FACT IF YOU SAY BLOCK 90[146]"
1270 PRINT"I'LL GO TO MEMORY LOCATION"
1280 PRINT"64*90=5760 TO GET THE FIRST OF"
1290 PRINT"THE 63 BYTES!":MS$="63 BITES?!":GOSUB63100:GOSUB63000
1300 PRINT"[147]OK..YOU PICK AN N[146] (THE SPRITE #)"
1310 PRINT"AND A B[146] (THE BLOCK NUMBER)."
1320 PRINT"HINT[157][157][157][157][184][184][184][184][145]:B=11,13,14 & 15"
1330 PRINT"ARE VERY NICE BLOCKS 'CAUSE"
1340 PRINT"THE 63 BYTES OF MEMORY STARTING"
1350 PRINT"AT 64*11=704[146],64*13=832[146],64*14=896"
1360 PRINT"AND 64*15=960[146] ARE AVAILABLE!"
1370 PRINT"(..LET'S SAY 'RESERVED' FOR SPRITES)."
1380 PRINT"THEN YOU MUST POKE[146] THE 1[146]'S"
1390 PRINT"AND 0[146]'S INTO THE BLOCK."
1395 PRINT"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT":GOSUB63000
1400 PRINT"[147]LET'S SAY THAT AGAIN:"
1410 PRINT"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT"
1420 PRINT"NOW YOU TELL THE C64 WHERE"
1430 PRINT"THE SPRITE SHAPE IS STORED."
1440 PRINT"FOR SPRITE N[146], YOU MUST:"
1450 PRINT"110 POKE 2040+N,B[146]:REM B=BLOCK #"
1460 PRINT"NOW TO HAVE SPRITE #N DISPLAYED"
1470 PRINT"ON THE SCREEN YOU MUST ENABLE"
1480 PRINT"THIS SPRITE.":MS$=" 2040+N[146]":GOSUB63100:GOSUB63000
1485 PRINT"[147]YOU'LL ALSO WANT TO PUT IT AT"
1486 PRINT"THE RIGHT PLACE ON THE SCREEN,"
1487 PRINT"GIVE IT A NICE COLOUR, MOVE IT"
1488 PRINT"AROUND, MAKE IT BIGGER OR SMALLER"
1489 PRINT"AND OTHER CLEVER THINGS."
1490 PRINT"ALL THIS INFORMATION MUST GO TO"
1495 PRINT"THE VIDEO CHIP[146]!":MS$="NICE CHIP!":GOSUB63100:GOSUB63000
1500 PRINT"[147]THE VIDEO CHIP"
1501 PRINT"THIS SEXY CHIP HAS 47 INTERNAL"
1502 PRINT"MEMORY LOCATIONS OR REGISTERS[146]."
1505 PRINT"THEY START AT $D000[146] IN HEXADECIMAL"
1510 PRINT"(NICE) AND 53248[146] IN DECIMAL"
1520 PRINT"(NOT SO NICE). ANYWAY LET:"
1530 PRINT"120 V=53248:REM VIDEO CHIP BASE"
1540 PRINT"TO 'TURN ON' SPRITE #N:"
1550 PRINT"130 POKE V+21,2^N"
1560 PRINT"YES....THAT'S 2^N."
1561 MS$="TURN ME ON":GOSUB63100:GOSUB63000
1565 PRINT"[147]YOU SEE, THE REGISTER AT V+21"
1570 PRINT"WHICH 'ENABLES' SPRITES HAS 8 BITS."
1571 PRINT"WE LABEL THE BITS 0,1,...7"
1572 PRINT"(SOUND FAMILIAR?)"
1575 PRINT"EACH BIT CORRESPONDS TO A SPRITE."
1576 PRINT"TO 'SEE' SPRITE #5, TURN ON THE"
1577 PRINT"BIT #5!"
1578 PRINT"HOW? JUST POKE V+21,32[146]"
1580 PRINT"NOTE[157][157][157][157][184][184][184][184][145]: 2^5=32"
1581 MS$=" 00100000":GOSUB63100:GOSUB63000
1590 PRINT"[147]FOR OUR 'SPRITE #N' WE WILL:"
1595 PRINT"130 POKEV+21,2^N"
1596 PRINT"(YOU WON'T BE SURPRISED TO SEE"
1600 PRINT"THAT ANY OTHER SPRITES WILL"
1610 PRINT"DISAPPEAR!)"
1620 PRINT"IF YOU WANT SPRITE #0 AND[146] SPRITE #3"
1630 PRINT"AND[146] SPRITE #7 ALL[146] 'ENABLED' OR 'VISIBLE'"
1640 PRINT"THEN POKEV+21,1+8+128[146]"
1650 PRINT"NOTE:2^0+2^3+2^7=1+8+128 (NICE)!"
1660 PRINT"YOU WANT ALL 8 SPRITES?
1670 [153]"POKEV+21,255":MS$[178]" 10001001":[141]63100:[141]63000
1700 [153]"LOADSO FAR WE HAVE:"
1710 [153]"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT"
1720 [153]"110 POKE2040+N,B:REM WHERE SHAPE IS "
1730 [153]"120 V=53248: REM VIDEO CHIP BASE "
1740 [153]"130 POKEV+21,2^N:REM ENABLE SPRITE "
1750 [153]"..AND SPRITE #N IS ON THE SCREEN!"
1760 [153]"BUT WHERE AND WHAT COLOUR?!*+!"
1770 [153]"THERE ARE 16 COLOURS TO CHOOSE FROM."
1780 [153]"WE LABEL THEM 0,1,2,...15."
1790 [153]"TO MAKE SPRITE #N COLOUR #10"
1800 [153]"(A LIGHT RED) WE POKE ANOTHER"
1810 [153]"MAGIC REGISTER IN THE VIDEO CHIP.""
1820 PRINT"POKEV+39+N,10[146]:SPRITE #N IS RED!":GOSUB63000
1830 PRINT"[147]MAYBE WE SHOULD HAVE PICKED A"
1840 PRINT"COLOUR BEFORE[146] WE MADE THE SPRITE"
1845 PRINT"VISIBLE! THE LAST THING WE WANT"
1847 PRINT"TO DO IS TO DISPLAY OUR SPRITE"
1848 PRINT"BEFORE IT'S PRESENTABLE!"
1850 PRINT"ANYWAY, WE'LL FIX THAT UP LATER.":MS$=" PATIENCE":GOSUB63100
1855 GOSUB63000
1860 PRINT"[147]HOW ABOUT THE POSITION ON THE"
1870 PRINT"SCREEN? WELL THE C64 HAS 40 COLUMNS"
1880 PRINT"OR 'PRINT POSITIONS'. EACH IS"
1890 PRINT"8 'DOTS' WIDE. THAT MAKES 40*8=320" "
1891 [153]"DOTS HORIZONTALLY AND WE SHOULD"
1900 [153]"BE ABLE TO 'POSITION' OUR SPRITE #N"
1910 [153]"IN ANY OF 320 X-POSITIONS."
1920 [153]"ALSO, THE C64 HAS 25 ROWS, EACH "
1930 [153]"8 DOTS HIGH AND 25*8=200 SO THERE"
1950 [153]"WILL BE 200 POSSIBLE Y-POSITIONS"
1960 [153]"FOR OUR SPRITE.":[141]63000
1970 [153]"LOADWHERE DO WE PUT THIS X-POSITION &"
1980 [153]"Y-POSITION INFORMATION?"
1990 [153]"INTO ANOTHER V+SOMETHINGWAIT REGISTER."
2000 [153]"THIS TIME WE:"
2010 [153]"POKE V+2*N,X:POKE V+2*N+1,Y"
2020 [153]"AS LONG AS 'X' AND 'Y' ARE BOTH"
2025 [153]"LESS THAN 256 WE'RE IN GOOD SHAPE!"
2040 [153]"IN FACT WE COULD:"
2050 [153]"FOR T=0 TO 500 "
2060 [153]"X=T/2:Y=T/3 "
2066 [153]"POKE V+2*N,X:POKE V+2*N+1,Y"
2070 [153]"NEXT T ":[141]63000
2080 [153]"LOADHOW ABOUT SOMETHING CUTE LIKE:"
2090 [153]"FOR T=0 TO 500 "
2100 [153]"X=FNX(T):Y=FNY(T) "
2110 [153]"POKE V+2*N,X:POKE V+2*N+1,Y"
2120 [153]"NEXT T "
2130 [153]"THEN OUR SPRITE WOULD FOLLOW"
2140 [153]"A CURVE GIVEN BY SOME FUNCTIONS"
2150 [153]"FNX AND FNY, PREVIOUSLY DEFWAITINED."
2155 MS$[178]"DEF FNX(T)":[141]63100:[141]63000
2160 [153]"LOADIF YOU'D LIKE TO HAVE THE SPRITE"
2170 [153]"AT THE RIGHT ON THE SCREEN, IN"
2180 [153]"PIXEL POSITIONS 256 TO 320,"
2190 [153]"THEN WE HAVE TO DO THE FOLLOWING:"
2210 [153]"TELL IT TO THE VIDEO CHIP!":MS$[178]"NICE CHAP!":[141]63100
2215 [141]63000
2220 [153]"LOADYET ANOTHER REGISTER, AT V+16, HAS"
2230 [153]"8 BITS, ONE FOR EACH OF 8 SPRITES,"
2240 [153]"AND FOR SPRITE #N WE WILL"
2250 [153]"POKE V+16,2^N"
2260 [153]"THIS TURNS ON 'BIT #N' SO THAT"
2270 [153]"SPRITE #N WILL BE ABLE TO MOVE THRU'"
2280 [153]"X-POSITIONS 256 TO 320!":MS$[178]" 256-320!":[141]63100:[141]63000
2290 [153]"LOADNOTEWAIT:POKE V+16,32 WILL AFFECT THE"
2300 [153]"X-POSITION OF SPRITE #5 BY ADDING 256"
2310 [153]"TO THE VALUE OF X POKEWAITD INTO V+2*5"
2320 [153]"POKE V+2*5,50:REM X-POS'N IS 50"
2330 [153]"POKE V+16,32:REM ADD 256"
2340 [153]"THIS PUTS SPRITE #5 IN X-POS'N 306"
2341 MS$[178]" V+16WAIT":[141]63100:[141]63000
2345 [153]"LOADIF YOU WANT SPRITE #0 ANDWAIT SPRITE #3"
2350 [153]"ANDWAIT SPRITE #7 ALLWAIT 'AT THE RIGHT'"
2360 [153]"THEN PICK AN X0,X3 & X7:"
2370 [153]"POKE V+2*0,X0:REM X-POS'N OF #0"
2380 [153]"POKE V+2*3,X3:REM X-POS'N OF #3"
2390 [153]"POKE V+2*7,X7:REM X-POS'N OF #7"
2400 [153]"POKE V+16,1+8+128:ADD 256 TO ALL!"
2405 MS$[178]" V+2*NWAIT":[141]63100:[141]63000:[153]"LOADCHOOSE BLOCK 13 & SPRITE 3"
2406 [153]"AND MAKE ALL 'SHAPE' BYTES=240WAIT"
2407 [153]" 99 B=13:N=3 "
2410 [153]"100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT "
2420 [153]"110 POKE2040+3,B: REM WHERE SHAPE IS "
2430 [153]"120 V=53248: REM VIDEO CHIP BASE "
2440 [153]"130 POKE V+39+N,10:REM RED SPRITE "
2450 [153]"140 POKEV+21,2^N: REM ENABLE SPRITE "
2460 [153]"150 FOR T=0 TO 500 STEP 5 "
2470 [153]"160 X=T/2:Y=180+T/5 "
2475 [153]"170 POKE V+2*N,X:POKE V+2*N+1,Y "
2480 [153]"180 NEXT T ":[141]4000
2485 MS$[178]" YUM !!! WAIT":[141]63100
2490 [153]"ONONONONONONTHAT'S FOR ONE SPRITE..N=3":[151]V[170]21,0
2500 [153]"LET'S HAVE 3 SPRITES..#0, #3 AND #7.":[141]63000
2510 [153]"LOAD100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT":[141]2600
2520 [153]"110 POKE2040+0,B: REM #0'SHAPE BLOCK' ":[141]2610
2521 [153]"111 POKE2040+3,B: REM #3'SHAPE BLOCK' ":[141]2620
2522 [153]"112 POKE2040+7,B: REM #7'SHAPE BLOCK' ":[141]2630
2530 [153]"120 V=53248: REM VIDEO CHIP BASE ":[141]2640
2540 [153]"130 POKE V+39+0,10:REM #0 IS RED ":[141]2650
2541 [153]"131 POKE V+39+3,12:REM #3 IS WHITE ":[141]2660
2542 [153]"132 POKE V+39+7,14:REM #7 IS BLUE ":[141]2670
2550 [153]"140 POKEV+21,1+8+128:REM ENABLE SPRITES":[141]2680
2560 [153]"150 FOR T=0 TO 500: TT=T/50 ":[141]2690
2565 [153]"160 X0=T/2:Y0=T/3 ":[141]2700
2566 [153]"161 X3=250-T/2:Y3=200-T/3 ":[141]2710
2567 [153]"162 X7=150+100*SIN(TT):Y7=100+50*COS(TT)":[141]2720
2570 [153]"170 POKE V+2*0,X0:POKE V+2*0+1,Y0 ":[141]2730
2575 [153]"171 POKE V+2*3,X3:POKE V+2*3+1,Y3 ":[141]2740
2576 [153]"172 POKE V+2*7,X7:POKE V+2*7+1,Y7 ":[141]2750
2580 [153]"180 NEXT T "
2590 [141]2760:[141]12500:MS$[178]" WHEE!!":[141]63100:[141]63000:[137]2800
2600 [153]"PUT DATA INTO BLOCK 'B'":[141]63000:[142]
2610 [153]"TELL WHERE #0 SHAPE IS ":[141]63000:[142]
2620 [153]"TELL WHERE #3 SHAPE IS ":[141]63000:[142]
2630 [153]"TELL WHERE #7 SHAPE IS ":[141]63000:[142]
2640 [153]"REMEMBER THIS NUMBER!!!":[141]63000:[142]
2650 [153]"POKE V+39+N & N=0..OK? ":[141]63000:[142]
2660 [153]"POKE V+39+N & N=3..OK! ":[141]63000:[142]
2670 [153]".....WHAT ELSE?....... ":[141]63000:[142]
2680 [153]"TURN THEM ALL ON!!!!!!!":[141]63000:[142]
2690 [153]"NOW,FOR 500 STEPS OR SO":[141]63000:[142]
2700 [153]"DEFINE X- AND Y-POS'NS.":[141]63000:[142]
2710 [153]"FOR #3 TOO ":[141]63000:[142]
2720 [153]"AND #7...!?* ":[141]63000:[142]
2730 [153]"MOVE SPRITE #0 ":[141]63000:[142]
2740 [153]"MOVE SPRITE #3 ":[141]63000:[142]
2750 [153]"MOVE SPRITE #7 ":[141]63000:[142]
2760 [153]"ON TO NEXT T. ":[141]63000:[142]
2800 [153]"LOADSTOPOF COURSE WE COULD HAVE THE SPRITES"
2810 [153]"EACH A DIFFERENT SHAPE."
2820 [153]"WE COULD:"
2830 [153]"FORI=0TO62:READ X:POKE64*B0+I,X:NEXT"
2840 [153]"FORI=0TO62:READ X:POKE64*B3+I,X:NEXT"
2850 [153]"FORI=0TO62:READ X:POKE64*B7+I,X:NEXT"
2860 [153]"AND HAVE B0, B3 AND B7 ALL DIFFERENT"
2870 [153]"THEN WE'D TELL THE C64 WHERE THEY ARE:"
2880 [153]"POKE2040+0,B0"
2881 [153]"POKE2040+3,B3"
2882 [153]"POKE2040+7,B7"
2885 MS$[178]" 2040+NWAIT":[141]63100
2890 [141]63000
2900 [153]"LOADLET'S PLAY WITH THE SPRITE CREATED WITH:"
2910 [153]" 99 B=13:N=3 "
2920 [153]"100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT "
2930 [153]"110 ETC. ETC. ETC. "
2940 N[178]3:B[178]13:T0[178]500:T1[178]500:[141]4100
2950 [141]63000
2955 [153]"TO CHANGE IT'S SIZE"
2956 [153]"WE POKE ANOTHER V+SOMETHINGWAIT REGISTER!":[141]63000
2960 [153]"LOADWE'LL EXPAND THE X-DIMENSION:"
2970 [153]" POKE V+29,2^N ":[141]63000:[151]V[170]29,2[174]N
2980 [153]"WE'LL EXPAND THE Y-DIMENSION:"
2990 [153]" POKE V+23,2^N ":[141]63000:[151]V[170]23,2[174]N
3000 [153]"WE'LL SHRINK THE X-DIMENSION:"
3010 [153]" POKE V+29,0 ":[141]63000:[151]V[170]29,0
3020 [153]"WE'LL SHRINK THE Y-DIMENSION:"
3030 [153]" POKE V+23,0 ":[141]63000:[151]V[170]23,0
3040 [141]63000:[151]V[170]21,0
3050 [153]"LOADWHAT ABOUT THIS READ X:POKE 832+I,XWAIT?"
3060 [153]"READ WHAT?"
3070 [153]"A SPRITE, REMEMBER, IS 24 PIXELS WIDE."
3080 [153]"THAT'S 3WAIT BYTES WHICH THEN GIVE THE"
3090 [153]"FIRSTWAIT OF 21 ROWS OF PIXEL INFORMATION."
3100 [153]"IF THE 3 BYTES WERE 255,85 AND 8"
3200 [153]"WHICH,IN BINARY LOOK LIKE A STRING"
3210 [153]"OF 1'S AND 0'S, NAMELY:"
3220 [153]"11111111 & 01010101 & 00001000"
3225 [153]"OR, SIDE BY SIDE:"
3226 [153]"111111110101010100001000"
3227 [141]63000
3228 [153]"LOAD111111110101010100001000"
3230 [153]"THEN THE FIRST ROW OF PIXELS WOULD BE:"
3240 [153]"(null)(null)(null)(null)(null)(null)(null)(null) (null) (null) (null) (null) (null) "
3250 [141]63000
3260 [153]"SEE!":[141]63000
3270 [153]"111111110101010100001000"
3275 [153]"^^^^^^^^ ^ ^ ^ ^ ^ "
3280 [153]"(null)(null)(null)(null)(null)(null)(null)(null) (null) (null) (null) (null) (null) ":[141]63000
3290 [153]"IF THE NEXT 3 BYTES IN THE"
3300 [153]"BLOCK OF MEMORY WHICH HAS THE 'SHAPE'"
3310 [153]"WERE 170,0,170 THEN:":[141]63000
3320 [153]"101010100000000010101010"
3330 [153]"(null) (null) (null) (null) (null) (null) (null) (null) "
3335 [153]"<TAN170TANTAN><TANTAN0TANTANTAN><TAN170TANTAN>":[141]63000
3340 [153]"LOADLET'S MAKE A PACMANWAIT:":[141]63000:[153]"LOAD":[141]7000:[141]6900
3350 [141]63000:[153]"NOW..."
3360 [153]"IN BINARY!":[141]63000:T[178]200
3400 [153]" 000000001111111100000000
3401 FORI=1TOT:NEXT
3410 PRINT" 000001111111111110000000
3411 [129]I[178]1[164]T:[130]
3420 [153]" 000011111111111111000000
3421 FORI=1TOT:NEXT
3430 PRINT" 000111111111111111100000
3431 [129]I[178]1[164]T:[130]
3440 [153]" 001111110000011111110000
3441 FORI=1TOT:NEXT
3450 PRINT" 011111110000011111111000
3451 [129]I[178]1[164]T:[130]
3460 [153]" 111111110111011111110000
3461 FORI=1TOT:NEXT
3470 PRINT" 111111110111011111100000
3471 [129]I[178]1[164]T:[130]
3480 [153]" 111111111111111111000000
3481 FORI=1TOT:NEXT
3490 PRINT" 111111111111111110000000
3491 [129]I[178]1[164]T:[130]
3500 [153]" 111111111111111100000000
3501 FORI=1TOT:NEXT
3510 PRINT" 111111111111111100000000
3511 [129]I[178]1[164]T:[130]
3520 [153]" 011111111111111110000000
3521 FORI=1TOT:NEXT
3530 PRINT" 001111111111111111000000
3531 [129]I[178]1[164]T:[130]
3540 [153]" 000111111111111111100000
3541 FORI=1TOT:NEXT
3550 PRINT" 000011111111111111110000
3551 [129]I[178]1[164]T:[130]
3560 [153]" 000001111111111111111000
3561 FORI=1TOT:NEXT
3570 PRINT" 000000011111111111111100
3571 [129]I[178]1[164]T:[130]
3580 [153]" 000000000111111111111000
3581 FORI=1TOT:NEXT
3590 PRINT" 000000000001111110000000
3591 [129]I[178]1[164]T:[130]
3600 [153]" 000000000000111000000000
3601 FORI=1TOT:NEXT
3610 GOSUB63000:PRINT"PICK OUT"
3620 PRINT"THE BYTES!":GOSUB63000:T=200
3630 PRINT" <[192][192][192]0[192][192]><[192]255[192][192]><[192][192][192]0[192][192]>
3631 [129]I[178]1[164]T:[130]
3640 [153]" <TANTANTAN7TANTAN><TAN255TANTAN><TAN128TANTAN>
3641 FORI=1TOT:NEXT
3650 PRINT" <[192][192]15[192][192]><[192]255[192][192]><[192]192[192][192]>
3651 [129]I[178]1[164]T:[130]
3660 [153]" <TANTAN31TANTAN><TAN255TANTAN><TAN224TANTAN>
3661 FORI=1TOT:NEXT
3670 PRINT" <[192][192]63[192][192]><[192][192][192]7[192][192]><[192]240[192][192]>
3671 [129]I[178]1[164]T:[130]
3680 [153]" <TAN127TANTAN><TANTANTAN7TANTAN><TAN248TANTAN>
3681 FORI=1TOT:NEXT
3690 PRINT" <[192]255[192][192]><[192]119[192][192]><[192]240[192][192]>
3691 [129]I[178]1[164]T:[130]
3700 [153]" <TAN255TANTAN><TAN119TANTAN><TAN224TANTAN>
3701 FORI=1TOT:NEXT
3710 PRINT" <[192]255[192][192]><[192]255[192][192]><[192]192[192][192]>
3711 [129]I[178]1[164]T:[130]
3720 [153]" <TAN255TANTAN><TAN255TANTAN><TAN128TANTAN>
3721 FORI=1TOT:NEXT
3730 PRINT" <[192]255[192][192]><[192]255[192][192]><[192][192][192]0[192][192]>
3731 [129]I[178]1[164]T:[130]
3740 [153]" <TAN255TANTAN><TAN255TANTAN><TANTANTAN0TANTAN>
3741 FORI=1TOT:NEXT
3750 PRINT" <[192]127[192][192]><[192]255[192][192]><[192]128[192][192]>
3751 [129]I[178]1[164]T:[130]
3760 [153]" <TANTAN63TANTAN><TAN255TANTAN><TAN192TANTAN>
3761 FORI=1TOT:NEXT
3770 PRINT" <[192][192]31[192][192]><[192]255[192][192]><[192]224[192][192]>
3771 [129]I[178]1[164]T:[130]
3780 [153]" <TANTAN15TANTAN><TAN255TANTAN><TAN240TANTAN>
3781 FORI=1TOT:NEXT
3790 PRINT" <[192][192][192]7[192][192]><[192]255[192][192]><[192]248[192][192]>
3791 [129]I[178]1[164]T:[130]
3800 [153]" <TANTANTAN1TANTAN><TAN255TANTAN><TAN252TANTAN>
3801 FORI=1TOT:NEXT
3810 PRINT" <[192][192][192]0[192][192]><[192]127[192][192]><[192]248[192][192]>
3811 [129]I[178]1[164]T:[130]
3820 [153]" <TANTANTAN0TANTAN><TANTAN31TANTAN><TAN128TANTAN>
3821 FORI=1TOT:NEXT
3830 PRINT" <[192][192][192]0[192][192]><[192][192]14[192][192]><[192][192][192]0[192][192]>
3831 [129]I[178]1[164]T:[130]
3850 [141]63000:[153]"NOW... "
3851 [153]"PUT THESE "
3852 [153]"NUMBERS "
3853 [153]"INTO DATA "
3854 [153]"STATEMENTS"
3855 [153]"..THEN.. "
3856 [153]" READ "
3857 [153]" AND "
3858 [153]" POKE "
3860 [141]63000:[153]"LOAD"
3865 [153]"100 FORI=0TO62:READ X:POKE832+I,X:NEXT "
3870 [153]"101 DATA 0,255,0"
3880 [153]"102 DATA 7,255,128"
3890 [153]"103 DATA 15,255,192
3900 PRINT"... ETC. ETC. ETC."
3910 PRINT"121 DATA 0,14,0"
3920 MS$=" SIMPLE!":GOSUB63100
3930 GOSUB63000:PRINT"[147]LET'S DO IT:":Q$="":GOSUB3931:GOTO10000
3931 PRINT""Q$"100 FORI=0TO62:READ X:POKE832+I,X:NEXT "
3932 PRINTQ$"200 POKE2040+3,13: REM WHERE SHAPE IS ":IFGG=1THEN3934
3933 PRINTQ$"300 V=53248: REM VIDEO CHIP BASE "
3934 PRINTQ$"400 POKE V+39+3,10:REM RED SPRITE #3 "
3935 PRINTQ$"500 X=250:Y=200: REM PICK A POSITION "
3936 PRINTQ$"600 POKE V+2*3,X:POKE V+2*3+1,Y ":IFGG=1THENRETURN
3937 PRINTQ$"700 POKEV+21,2^3: REM ENABLE SPRITE #3":RETURN
3940 DATA0,255,0,7,255,128,15,255,192,31,255,224,63,7,240,127,7,248,255,119,240
3941 DATA255,119,224,255,255,192,255,255,128,255,255,0,255,255,0,127,255,128
3942 DATA63,255,192,31,255,224,15,255,240,7,255,248,1,255,252,0,127,248
3943 DATA0,31,128,0,14,0
4000 REM SPRITES
4010 B=13:REM BLOCK 13
4020 N=3 :REM SPRITE #0
4030 T0=0:T1=500:GOSUB4100:RETURN
4100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT
4110 POKE2040+N,B: REM WHERE SHAPE IS
4120 V=53248: REM VIDEO CHIP BASE
4130 POKE V+39+N,10:REM RED SPRITE
4135 POKE V+2*N,0:POKE V+2*N+1,0
4136 POKE V+29,0:POKE V+23,0
4140 POKEV+21,2^N: REM ENABLE SPRITE
4150 FOR T=T0 TO T1 STEP 5
4160 X=T/2:Y=100+T/5
4170 POKE V+2*N,X:POKE V+2*N+1,Y
4180 NEXT T
4190 RETURN
5000 PRINT"[147]":MS$="AU REVOIR!":GOSUB63100
5010 PRINT"LOAD"CHR$(34)">SPRITES-2"CHR$(34)",8":PRINT"RUN":END
6900 PRINT" 111111111122222 "
6901 PRINT" 123456789012345678901234 "
6902 PRINT" 1"
6903 PRINT" 2"
6904 PRINT" 3"
6905 PRINT" 4"
6906 PRINT" 5"
6907 PRINT" 6"
6908 PRINT" 7"
6909 PRINT" 8"
6910 PRINT" 9"
6911 PRINT"10"
6912 PRINT"11"
6913 PRINT"12"
6914 PRINT"13"
6915 PRINT"14"
6916 PRINT"15"
6917 PRINT"16"
6918 PRINT"17"
6919 PRINT"18"
6920 PRINT"19"
6921 PRINT"20"
6922 PRINT"21"
6923 RETURN
7000 PRINT" [209][209][209][209][209][209][209][209]
7001 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
7002 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209]
7003 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
7004 PRINT" [209][209][209][209][209][209] [209][209][209][209][209][209][209]
7005 [153]" (null)(null)(null)(null)(null)(null)(null) (null)(null)(null)(null)(null)(null)(null)(null)
7006 PRINT" [209][209][209][209][209][209][209][209] [209][209][209] [209][209][209][209][209][209][209]
7007 [153]" (null)(null)(null)(null)(null)(null)(null)(null) (null)(null)(null) (null)(null)(null)(null)(null)(null)
7008 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
7009 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
7010 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
7011 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
7012 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
7013 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
7014 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
7015 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
7016 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
7017 [153]" (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
7018 PRINT" [209][209][209][209][209][209][209][209][209][209][209][209]
7019 [153]" (null)(null)(null)(null)(null)(null)(null)(null)
7020 PRINT" [209][209][209][209][209][209]
7021 [142]
10000 [141]63000:[153]"LOADBETTER STILL..LET'S ENABLE"
10010 [153]"SPRITE #3 SO WE CAN SEEWAIT IT HAPPEN!"
10020 [153]"WE'LL SET V=53248WAIT"
10030 [153]"AND WE'LL POKE V+21,2^3"
10040 [153]"THEN WE'LL RUN THE PROGRAM:":GG[178]1:[141]3931:Q$[178]"WAIT"
10050 [141]63000:[153]"LOAD":[141]3931:[141]63000:V[178]53248
10051 [129]I[178]0[164]62:[151]832[170]I,240:[130]
10055 [151]V[170]6,250:[151]V[170]7,200:[151]V[170]29,0:[151]V[170]23,0:[151]V[170]21,8
10060 [153]"100 FORI=0TO62:READ X:POKE832+I,X:NEXT "
10065 [140]:[129]I[178]0[164]62:[135] X:[151]832[170]I,X:[130]
10070 [153]"200 POKE2040+3,13WAIT: TELL WHERE SHAPE IS"
10075 [151]2040[170]3,13:[141]10500
10080 [153]"400 POKE V+39+3,1WAIT: SPRITE #3 IS WHITE "
10085 [151] V[170]39[170]3,1:[141]10500
10090 [153]"500 X=200:Y=150WAIT: PICK A POSITION "
10095 X[178]200:Y[178]150:[141]10500
10100 [153]"600 POKE V+2*3,X:POKE V+2*3+1,Y"
10105 [151] V[170]2[172]3,X:[151] V[170]2[172]3[170]1,Y:[141]10500
10110 [153]"LOADPICK A COLOUR # (0 TO 15)";:[133] C$:C[178][197](C$)
10120 [139] C[179]0 [176] C[177]15 [167]10110
10130 [151]V[170]39[170]3,C:[141]63000:[151]V[170]39[170]3,1:[153]"WE DID N=3:POKEV+39+N,"C
10135 [141]63000
10140 [153]"PICK AN X-POSITION";:[133] X$:X%[178][197](X$):[139]X%[179]0[176]X%[177]355[167]10140
10145 [139]X%[177]255[167] XH%[178]8:X%[178]X%[171]256
10150 [151]V[170]2[172]3,X%:[151]V[170]16,XH%
10155 [153]"WE DID: N=3:POKEV+2*N,"X%":POKEV+16,"XH%:[141]63000
10160 [151]V[170]16,0:[151]V[170]2[172]3,150:[151]V[170]39[170]3,1
10170 [153]"WHAT WILL POKE V+29,2^3WAIT DO?":[141]63000:[151]V[170]29,8
10180 [153]"WHAT WILL POKE V+23,2^3WAIT DO?":[141]63000:[151]V[170]23,8
10499 [137]11000
10500 [129]J[178]1[164]3:[153]" ":[129]K[178]1[164]100:[130]:[153]"DONE!"
10510 [153]"DONE!":[129]K[178]1[164]100:[130]:[130]:[141]63000
10520 [142]
11000 [141]63000:MS$[178]"AU REVOIR!":[153]"LOAD":[141]63100
11010 [153]"POKE 53248+21,0:REM TURN OFF!":[128]
12500 [143] SPRITES
12510 [129]I[178]0[164]62:X[178]240:[151]832[170]I,X:[130]
12520 [151]2040,13:[151]2040[170]3,13:[151]2040[170]7,13
12530 V[178]53248:[151] V[170]39,10:[151]V[170]39[170]3,1:[151]V[170]39[170]7,14
12540 [151]V[170]21,1[170]8[170]128
12560 [129] T[178]0 [164] 500 [169] 5
12565 X0[178]T[173]2:Y0[178]T[173]3
12566 X3[178]250[171]T[173]2:Y3[178]200[171]T[173]3
12567 X7[178]150[170]100[172][191](T[173]50):Y7[178]100[170]50[172][190](T[173]50)
12570 [151] V[170]2[172]0,X0:[151] V[170]2[172]0[170]1,Y0
12575 [151] V[170]2[172]3,X3:[151] V[170]2[172]3[170]1,Y3
12576 [151] V[170]2[172]7,X7:[151] V[170]2[172]7[170]1,Y7
12580 [130] T:[151]V[170]21,0:[142]
60000 [143] INITIALIZE
60001 BT$[178]"":[129]I[178]1[164]24:BT$[178]BT$[170]"":[130]
60002 PT$[178]"ORTANTANTANTANTANTANTANTANTANTAN^CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD/=TANTANTANTANTANTANTANTAN=EXP"
60003 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDFN============STOPTHEN"
60004 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)(null)ONONONONCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD"
60005 PT$[178]BT$[170]"ONONONONONON"[170]PT$
60007 ML$[178]""
60008 WD[178]40:CRT[178]1024
60009 W2[178]WD[173]2:W3[178]WD[171]1:W1$[178][202]([196](WD),2):[151]53281,15:[151]53280,12:[153]"STOP"
60010 V[178]53248:[129]I[178]0[164]16:[151]V[170]I,0:[130]
60011 [151]V[170]23,0:[151]V[170]29,0:[129]I[178]0[164]7:[151]V[170]39[170]I,0:[130]
60020 [142]
62000 [141]63000
62001 [153]SD$CL$:[153]CL$:[153]CL$
62003 [142]
63000 [153]"STOPHIT RETURNWAIT TO CONTINUE";
63001 [161]A$:[139]A$[179][177]""[167]63001
63002 [161]A$:[139]A$[178]""[167]63002
63003 [142]
63100 [129]T[178]1[164]5:[153]PT$MS$;
63101 [153]PT$" ";
63102 [153]PT$MS$;:[130]
63103 [153]"STOP":[142]
63900 SD$[178]"":CL$[178]"WAIT WAIT"
63901 SR$[178]""
63902 [142]